Notions de base des réseaux TCP/IP

A) Notions de base sur les adresses IP par rapport à Internet

L’Internet est fondé sur la famille des protocoles TCP/IP. Ces protocoles permettent de faire communiquer une des stations d’un réseau local avec l’une des stations d’un autre réseau local se trouvant aux Etats Unis ou en Australie ou partout ailleurs. Pour ce faire les informations doivent traverser un réseau longue distance (WAN, Wide Area Network). Ce réseau WAN dans notre cas est Internet. Il interconnecte des réseaux locaux du monde entier.

De nombreuses entreprises ont organisé leur réseau informatique local, national ou international sur le même principe qu’Internet, on parle alors de réseau Intranet. D’autres entreprises utilisent Internet pour interconnecter leur réseaux locaux (sans que d’autres utilisateurs puissent se connecter à ces réseaux locaux) en créant un VPN (Virtual Private Network). Dans ce cas on parle d’Extranet.

Principe

Comme cela a été dit précédemment n’importe qu’elle station d’un réseau local connecté à Internet peut communiquer avec n’importe qu’elle autre station d’un autre réseau local connecté aussi à Internet. Pour que cela puisse se faire (pour que l’information soit acheminée vers la station désirée), Il faut donc que chaque station soit identifiée par une adresse qui lui est spécifique (dans notre cas c’est l’adresse IP).

En fait pour simplifier la gestion du réseau Internet et afin d’éviter à Internet de connaître toutes les adresses des stations qui sont connectées, il a été décidé qu’Internet doit se charger d’acheminer l’information d’une station vers le réseau local où se trouve la station destinatrice et c’est ensuite le réseau local qui se chargera d’acheminer l’information vers la bonne station. Pour cela il faut donc que tous les réseaux locaux connectés à Internet soient identifiés par une adresse unique (dans notre cas c’est la « partie réseau » de l’adresse IP).

Les différentes classes d’adresses IP

L’Internet est donc un réseau basé sur un ensemble de protocoles : les protocoles de la famille TCP/IP. La version actuelle est nommée IPV4 (version 4).

Pour localiser les machines, on fait usage d’adresses. Ces dernières sont utilisées à de nombreux niveaux dans les paquets qui transitent sur le réseau. Les adresses IP sont de la forme suivante : X. Y. Z. T où X, Y, Z, et T sont des nombres compris entre 0 et 255 (octets). Par exemple, 193. 252. 19. 3 est l’adresse IP d’une machine connectée sur l’Internet (DNS de Wanadoo). Il faut huit bits pour coder chacun des quatre octets constituant une adresse IP. On sait que 0 se code 00000000, 255 se code 11111111 et 193 se code 1100 0001.

Les adresses IP peuvent donc être représentées sur 32 bits. Ces 32 bits sont séparés en deux zones de bits contiguës :

une partie décrit le numéro du réseau local auquel est rattaché la station,

une partie correspond au numéro de la station dans le réseau local lui-même, appelée numéro d’hôte. Dans cette dernière partie, deux numéros sont réservés : celui où tous les bits sont nuls (on indique ainsi le réseau lui-même, une adresse de ce type s’appelle adresse réseau), et celui où tous les bits sont à 1 (on indique alors l’ensemble des machines, une adresse de ce type s’appelle adresse de diffusion ou adresse broadcast).

Selon l’adresse IP on définit différentes classes d’adresses. Il existe quatre classes d’adresses avec la version 4 (version courante) des protocoles TCP/IP, car les parties réseau et hôte n’ont pas toujours la même taille. Détaillons donc l’espace d’adressage d’IPV4.

II.1) Les adresses de classe A

Les adresses de classe A ont une partie réseau sur 8 bits, et une partie hôte sur 24 bits. Leur bit de poids le plus fort est 0, ce qui permet de les distinguer des autres classes.

Elles commencent en 0. 0. 0. 0 et se terminent en 127. 255. 255. 255. Il y a donc 128 réseaux de classe A, chacun pouvant accueillir théoriquement jusqu’à (224 - 2) hôtes (l’adresse réseau et l’adresse de diffusion ne désignent pas d’hôte particulier).

Remarque :

Ces 127 adresses sont déjà toutes réservées sur l’Internet

Le réseau de classe A d’adresse 127.0.0.0 est un réseau fictif interne à chaque machine : chaque nœud s’identifie au hôte 1 de ce réseau, dont l’adresse IP est 127. 0. 0. 1, et qu’on appelle localhost. Pour comprendre cela, rappelons-nous qu’à chaque interface physique d’une machine, une carte Ethernet par exemple, est associée une adresse IP unique. Souvent, le système d’exploitation crée une interface virtuelle supplémentaire, appelée « pseudo-interface loopback », et lui attribue l’adresse 127.0.0.1. Ainsi, un programme cherchant à s’adresser, à l’aide des protocoles TCP/IP, à un autre programme situé sur la même machine n’a qu’à indiquer 127.0.0.1 dans le champ destination des datagrammes IP qu’il génère. Ces datagrammes ne quitteront pas la machine, car le système d’exploitation reconnaîtra alors cette adresse comme étant celle de son interface loopback.

Le réseau de classe A d’adresse 10. 0. 0. 0 est utilisé pour créer des réseaux privés. Les paquets d’informations envoyés par les stations de ce réseau ne sont pas acheminés (routés) par Internet

II.2) Les adresses de classe B

Les adresses de classe B ont une partie réseau sur 16 bits, et une partie hôte de même taille. Leurs deux bits de poids forts sont 10, ce qui permet de les distinguer des autres classes.

Elles commencent en 128.0. 0. 0 et se terminent en 191. 255. 255. 255. Il y a donc 16 384 réseaux de classe B, chacun pouvant accueillir jusqu’à 65 534 hôtes. Une grande partie de ces 16 384 adresses réseaux est déjà réservée. Pour en obtenir, il faut justifier qu’on s’apprête à connecter un réseau de très grande envergure à l’Internet.

II.3) Les adresses de classe C

Les adresses de classe C ont une partie réseau sur 24 bits, et une partie hôte sur 8 bits. Leurs trois bits de poids fort sont 110, ce qui permet de les distinguer des autres classes.

Elles commencent en 192. 0. 0. 0 et se terminent en 223. 255. 255. 255. Il y a donc 2 097 152 réseaux de classe C, chacun pouvant accueillir jusqu’à 254 hôtes. Il reste encore suffisamment de classes C pour pouvoir en distribuer encore pendant cinq à dix ans, d’après de récentes analyses fondées sur le taux de croissance estimé de l’Internet.

II.4) Les adresses de classe D

On les appelle aussi adresses de groupes multicast. Elles commencent en 224. 0. 0. 0 et se terminent en 239. 255. 255. 255. Ce sont des adresses particulières où la notion de réseau disparaît : elles désignent non pas un hôte particulier, mais un groupe d’hôtes. Tout équipement désirant faire partie d’un groupe peut demander à y adhérer en précisant l’adresse multicast correspondante. A tout moment, tout paquet émis par une machine quelconque sur l’Internet, et à destination d’une adresse multicast particulière, est acheminé vers tous les membres du groupe en question.

Certaines adresses du groupe sont déjà attribuées, en voici un échantillon :

Adresse Nom associé Description

224. 0. 0. 0 BASE-ADRESS.MCAST.NET. Début des adresses multicast

224. 0. 0. 1 ALL-SYSTEMS.MCAST.NET Toutes les machines

224. 0. 0. 2 ALL-ROUTERS.MCAST.NET Tous les routeurs

224. 0. 0. 12 DHCP-AGENTS.MCAST.NET Agents DHCP

224. 0. 0. 13 PIM-ROUTERS.MCAST.NET Rouleurs multicast supportant PIM

II.5) Les adresses de classe E

Les adresses de classe E débutent en 240. 0. 0. 0 et se terminent en 255. 255. 255. 255. Elles sont réservées par Iana. Seule 255. 255. 255. 255 est pour l’instant attribuée, elle désigne toutes les machines, et est utilisée lorsqu’on a besoin de s’adresser à tous les équipements directement connectés à un même support : un paquet à destination de cette adresse ne traverse jamais les routeurs.

Les masques de réseau et de sous - réseaux

III.1) Les masques de réseau

Pour que le réseau Internet puisse router (acheminer) les paquets de données, il faut qu’il connaisse l’adresse IP du réseau local de destination. On a vu précédemment qu’une adresse IP est constituée d’une partie Réseau et d’une partie Station.

Il faut donc déterminer cette adresse réseau à partir de l’adresse IP de destination. Pour cela on utilise le masque de sous réseau.

A chaque classe d’adresses est associé un masque de réseau, ou netmask, qui est constitué de 32 bits. Le tableau suivant fournit les différents masques pour les trois classes traditionnelles.

Classe Masque

A 255. 0. 0. 0

B 255. 255. 0. 0

C 255. 255. 255. 0

Un « ET » logique appliqué entre le masque de réseau et l’adresse IP permet d’obtenir l’adresse d’un réseau correspondant.

Calcul de l’adresse réseau en décimal

@ IP 193 252 19 3

Masque Réseau 255 255 255 0

@ Réseau 193 252 19 0

Calcul de l’adresse réseau en binaire

@ IP 1100 0001 1111 1100 0001 0011 0000 0011

Masque Réseau 1111 1111 1111 1111 1111 1111 0000 0000

@ Réseau 1100 0001 1111 1100 0001 0011 0000 0000

Un « ET » logique appliqué entre le complément à 1 du masque de réseau et une adresse IP permet d’obtenir la partie hôte correspondante.

Calcul de l’adresse hôte en décimal

@ IP 193 252 19 3

Masque Réseau 0 0 0 255

@ Hôte 0 0 0 3

Calcul de l’adresse hôte en binaire

@ IP 1100 0001 1111 1100 0001 0011 0000 0011

Masque Réseau 0000 0000 0000 0000 0000 0000 1111 1111

@ Hôte 0000 0000 0000 0000 0000 0000 0000 0011

Ainsi, à l’aide du masque de réseau, on peut définir, pour toute adresse IP :

L’adresse réseau associée,

La partie hôte associée,

L’adresse de diffusion associée qui désigne tous les hôtes de ce réseau.

Le tableau suivant fournit ces informations pour trois adresses IP prises parmi les trois classes fondamentales.

Adresse IP 10. 25. 2. 5 172. 17. 5. 8 192. 168. 53. 24

Classe A B C

Masque de réseau 255. 0. 0. 0 255. 255. 0. 0 255. 255. 255. 0

Adresse de réseau 10. 0. 0. 0 172. 17. 0. 0 192. 168. 53. 0

Adresse de diffusion 10. 255. 255. 255 172. 17. 255. 255 192. 168. 53. 255

Complément à 1 du masque 0.255.255.255 0.0.255.255 0.0.0.255

Partie hôte de l’adresse 0.25.2.5 0.0.5.8 0.0.0.24

III.2) Les masques de sous - réseaux

Parfois, on est amené à répartir les adresses IP d’un même réseau de classe A, B ou C sur plusieurs supports physiques. En effet, si on dispose d’une cinquantaine de machines, à répartir sur trois réseaux Ethernet par exemple, notre fournisseur ne va pas nous offrir trois réseaux de classe C : une seule classe C peut déjà accueillir 254 machines.

Pour résoudre ce problème, il faut introduire un nouveau type de masque : le masque de sous - réseaux.

Le principe est simple : le réseau est découpé en sous - réseaux de même taille. Pour cela, la partie hôte des adresses est elle-même découpée en deux plages de bits :

la plage des bit de poids forts correspond aux bits identifiant les sous réseaux

l’autre plage désigne le numéro de machine dans le sous réseau.

Dans le masque de sous réseau, les bits correspondant aux bits des sous réseaux sont positionnés à 1

Pour trouver le sous - réseau auquel appartient un équipement, il suffit donc d’appliquer un « ET » logique entre son adresse IP et le masque de sous - réseaux.

Parmi les numéros de sous - réseaux ainsi créés, deux sont interdits d’utilisation :

le sous - réseau 0 qui serait confondu avec l’adresse du réseau

et le sous - réseau où tous les bits sont à 1, car l’adresse de diffusion de ce sous-réseau serait confondue avec l’adresse de diffusion du réseau.

On perd donc d’entrée de jeu deux adresses de sous - réseaux.

Application

Exemple :

Une société a obtenu une adresse réseau de classe C pour pouvoir connecter son réseau sur Internet. Cette société possède 3 succursales (une à Melun, une à Combs et une à la Rochette) qui doivent pouvoir communiquer entre elles à travers les réseaux publics (WAN).

L’adresse Internet de cette société est 195.18. 37. 0. C’est donc une adresse de classe C.

On peut voir sur le schéma qu’il y a 6 sous-réseaux (3 réseaux locaux et 3 à travers le réseau WAN).

Détermination des adresses de sous réseaux

Étant donné qu’il y a 6 sous réseaux à adresser, nous devons donc choisir un nombre de bit pouvant coder 6 + 2 réseaux = 8, soit 3 bit. En effet, dans un plan d’adressage, il ne faut pas oublier de compter les 2 réseaux que l’on n’a pas le droit d’utiliser. (Voir paragraphe précédent.)

Ces 3 bit sont pris sur les bit de poids fort de la partie station de l’adresse Internet.

Partie réseau de l’adresse Internet Partie station

195 18 37 0

1100 0011 0001 0010 0010 0101 0000 0000

1100 0011 0001 0010 0010 0101 XXX0 0000

avec ces 3 bit on peut obtenir les combinaisons suivantes :

000 Cette combinaison est inutilisable puisque identique à l’adresse réseau globale

001 Cette combinaison sera utilisée pour coder le réseau local de Melun

010 Cette combinaison sera utilisée pour coder le réseau local de Combs

011 Cette combinaison sera utilisée pour coder le réseau local de La Rochette

100 Cette combinaison sera utilisée pour coder le réseau WAN entre Internet et Melun

101 Cette combinaison sera utilisée pour coder le réseau WAN entre Combs et Melun

110 Cette combinaison sera utilisée pour coder le réseau WAN entre La Rochette et Melun

111 Cette combinaison est inutilisable puisque identique à l’adresse de diffusion globale

Ceci nous permet de remplir les adresses de sous réseaux dans le tableau. Pour les adresses de diffusion il suffit de mettre les 5 bit restants de la partie station à 1. Pour le masque de sous réseau, il suffit de mettre les bit de la partie réseau et sous réseau à 1 et les autres à 0 :

1111 1111 – 1111 1111 – 1111 1111 - 1110 0000 = 255.255.255.224

numéro adresse du

sous - réseau masque de

sous - réseau adresse de diffusion plage fonction

0 195. 18. 37. 0 Ne pas utiliser

1 195. 18. 37. 32 255. 255. 255. 224 195. 18. 37. 63 195. 18. 37. 33 à 195. 18. 37. 62 LAN de Melun

2 195. 18. 37. 64 255. 255. 255. 224 195. 18. 37. 95 195. 18. 37. 65 à 195. 18. 37. 94 LAN de Combs

3 195. 18. 37. 96 255. 255. 255. 224 195. 18. 37. 127 195. 18. 37. 97 à 195. 18. 37. 126 LAN de la Rochette

4 195. 18. 37. 128 255. 255. 255. 224 195. 18. 37. 159 195. 18. 37. 129 à 195. 18. 37. 158 WAN Melun-Internet

5 195. 18. 37. 160 255. 255. 255. 224 195. 18. 37. 191 195. 18. 37. 161 à 195. 18. 37. 190 WAN Melun-Combs

6 195. 18. 37. 192 255. 255. 255. 224 195. 18. 37. 223 195. 18. 37. 193 à 195. 18. 37. 222 WAN Melun-La Rochette

7 195. 18. 37. 224 195. 18. 37. 255 Ne pas utiliser

L’attribution des adresses IP

Comme toutes les ressources numériques de l’Internet, l’espace d’adressage IPV4 est géré par Iana. Dans un but de délocalisation de la tâche d’attribution des classes d’adresses IP, Iana a délégué les plages d’adresses à différents organismes. Pour obtenir une classe d’adresses, il faut contacter l’organisme qui fait géographiquement compétence. Le plan d’adressage actuel est décrit dans le tableau suivant.

RIPE (Réseaux IP Européens) est l’organisme compétent en Europe. APNIC gère la zone Asie - Pacifique. L’InterNIC gère de nombreuses zones géographiques, notamment l’Amérique, et il existe plusieurs autres organismes auxquels Iana a délégué une partie de l’espace d’adressage. Ces différents registres Internet délèguent parfois à leur tour à d’autres entités locales. Par exemple, le NIC-France (géré par l’Inria) s’est occupé pendant une période d’attribuer des classes d’adresses aux organismes désireux de se connecter à l’Internet depuis la France.

Bloc d’adresses Registre obtenant la délégation Date de délégation

000-063 Iana Septembre 81

064-095 Iana - Réservé Septembre 81

096-126 Iana - Réservé Septembre 81

127 Iana Septembre 81

128-191 Différents registres Mai 93

192-193 Différents registres Mai 93

194-195 RIPE NCC - Europe Mai 93

196-197 InterNIC Mai 93

198-199 InterNIC Amérique Centrale et du Sud Mai 93

200- 201 APNIC - Pacifique Mai 93

204-205 InterNIC - Amérique du Nord Mars 94

206 InterNIC - Amérique du Nord Avril 95

207 InterNIC - Amérique du Nord Novembre 95

208 InterNIC - Amérique du Nord Avril 96

209 InterNIC - Amérique du Nord Juin 96

210 APNIC - Pacifique Juin 96

211 APNIC - Pacifique Juin 96

212-223 Iana - Réservé Septembre 81

224-239 Iana - Muticast Septembre 81

240-255 Iana - Réservé Septembre 81

Attribution d’un réseau de classe A, B ou C

En France, ce sont les fournisseurs qui gèrent ce service, chacun disposant d’un ensemble de classes C qui lui ont été déléguées par RIPE, ou par NIC-France. Ainsi, c’est au fournisseur d’attribuer une ou plusieurs classes C. Celui qui désire une classe B doit s’adresser directement à RIPE ou à L’InterNIC, et fournir un dossier justifiant sa demande. Personne ne peut obtenir de classe A, elles ont toutes déjà été déléguées.

Lorsqu’un client utilisant des adresses attribuées par un fournisseur décide de résilier son abonnement pour se connecter chez un concurrent, il doit rendre ces adresses et renuméroter son réseau avec de nouvelles adresses fournies par le nouveau fournisseur. Cette opération est parfois complexe et coûteuse mais est imposée pour des raisons techniques, notamment pour juguler l’explosion des tables de routage des routeurs des fournisseurs du monde entier.

B) Internet et les protocoles.

Un peu d’histoire...

Le protocole TCP/IP a été mis au point dans le cadre du projet ARPA au début des années 1980. Bien que sa structure ne lui permette pas de s’intégrer dans le modèle OSI, il est devenu un standard de fait lié à la croissance du système Unix. Il est le précurseur des modèles organisés en couches et ses protocoles englobent l’ensemble complet des fonctionnalités attendues dans toutes les couches OSI, de la définition des trames transmises sur le réseau jusqu’aux applicatifs utilisateurs du type émulation de terminal ou transfert de fichiers.

I) Présentation rapide des différents protocoles.

I.1) Le protocole de résolution des adresses ARP :

Le protocole ARP (Address Resolution Protocol) est un mécanisme de traduction dynamique d’adresse implémenté au niveau liaison. Il est utilisé pour traduire des adresses de type INTERNET sur 32 bits en adresses ETHERNET sur 48 bits. ARP se présente comme un service qui gère des tables de correspondance d’adresses et répond à des requêtes d’identification. Lorsqu’il reçoit une requête, il crée un message qui est ensuite diffusé sur le réseau en attente d’une réponse positive de la part d’une des machines connectées. La réception de la réponse est assortie d’une temporisation. Une réponse positive provoque une mise à jour par ARP de ses tables de traduction d’adresses.

Autrement dit lorsqu’un équipement A veut envoyer un datagramme IP à un équipement B qui est connecté sur le même support, il doit l’encapsuler dans une trame de la couche MAC (802.3 par exemple). Le problème est que A ne connaît à priori que l’adresse IP de B et ne connaît pas l’adresse MAC de B. Il faut donc un protocole qui permette d’établir un lien entre l’adresse MAC d’un équipement et son adresse IP. C’est le rôle du protocole ARP. Exemple :

L’équipement A connaît l’adresse IP de B et veut lui faire parvenir un datagramme IP.

L’équipement A envoie donc, sur le support, une trame MAC de diffusion contenant dans son champ information l’adresse IP de B.

Tous les équipements connectés sur le support décodent cette trame, et compare l’adresse IP contenue dans le champ information à leur propre adresse IP.

L’équipement B reconnaît ainsi son adresse IP et renvoie à A une trame ARP pour lui indiquer son adresse MAC.

L’équipement A connaît ainsi l’adresse MAC de B et peut ainsi construire une trame avec l’adresse MAC de B, et encapsuler le datagramme IP destiner à B

I.2) Le protocole IP :

Le protocole Internet est responsable de l’adressage et du routage entre machines, du cheminement des paquets de données dans le réseau, de la constitution et du réassemblage des paquets. Les fonctionnalités assurées par IP peuvent se déduire de l’examen de l’en-tête du paquet. Il identifie entre autres la source et la destination du paquet et comporte des identificateurs de fragmentation.

I.3) Le protocole UDP :

Le protocole UDP (User Datagram Protocol) est un protocole de transmission de datagrammes sur le réseau qui fournit de manière optionnelle un certain nombre de contrôles. Un datagramme est un paquet de données considéré comme une entité isolée et indépendante, c’est-à-dire qu’il comporte dans son en-tête toutes les informations nécessaires à son acheminement à travers le réseau jusqu’à son destinataire.

La transmission de paquets composant le message est donc assurée de manière totalement indépendante pour chaque paquet. On pourrait, dans une certaine mesure, comparer ce type de service au service postal qui prend en charge les messages et assure leur transport à destination mais sans garantir le chemin parcouru par chaque message, ni le temps mis pour le parcourir, ni à fortiori le respect d’une séquentialité dans la délivrance des messages.

De plus, en ce qui concerne UDP, un paquet peut être retransmis plusieurs fois en fonction des différents temporisateurs du réseau. Une en-tête UDP contient un nombre limité d’informations. On y trouve :

Les adresses origine et destination

La longueur du datagramme

Une zone de contrôle d’erreurs

Pour envoyer un datagramme, le système doit donc, tout d’abord, en utilisant les primitives adéquates, renseigner l’adresse et le numéro port de destination. Ces informations sont connues dans les tables système.

I.4) Le protocole TCP :

Le protocole TCP est le protocole majeur de toute l’architecture INTERNET. C’est un protocole qui fonctionne en mode connecté. Il dispose d’un ensemble de fonctionnalités. En voici quelques unes :

Identification précise de l’émetteur et du destinataire

Gestion des accusés de réception

Délivrance de données fiable, séquentielle et sans duplication

Mécanisme de contrôle de flux

Connexions passives et actives

Multiplexage (plusieurs connexions simultanées sur un même support).

C’est un protocole beaucoup plus complexe qu’UDP, il se charge, entre autres, de remettre en ordre, avant leur délivrance, les paquets qui lui parviennent.

Une fonctionnalité importante est sa faculté de traiter les messages hors norme (out of band data). Ils correspondent à une notion d’urgence au niveau des données et de leur délivrance, implémentée dans le protocole TCP. Une donnée urgente doit être transmise en dehors de toute séquentialité par rapport au flux de transmission normal des données. Ces messages sont insérés dans le flux de propagation normal et entièrement gérés par le protocole. Ils ne sont pas conservés au niveau utilisateur. Cette implémentation permet à TCP de gérer simultanément la transmission de plusieurs de ces messages.

I.5) Le protocole ICMP :

Le protocole ICMP (Internet Control Message Protocol) constitue le protocole des messages d’erreur. Il fait entièrement partie de la couche IP. Les messages ICMP sont classés en plusieurs catégories :

La première est constituée de tous les messages résultant d’un incident réseau, où qu’il se soit produit, et qui peuvent être transmis à l’émetteur du paquet ayant subi l’incident. On peut classer dans cette catégorie les erreurs de routage ou celles qui résultent d’une indisponibilité du destinataire.

La seconde classe est constituée de tous les messages d’erreur induits par des incidents entre une machine hôte et la porte (gateway) par laquelle passent les paquets, par exemple, il peut s’agir d’une procédure de routage qui informe l’hôte d’un meilleur chemin que celui qui a été choisi à l’origine.

La dernière catégorie concerne tout ce qui est gestion de réseau, les tests de connexion, les mesures de performances et de trafic (ping).

Toutes les actions, transmissions ou redirections induites par un message ICMP sont prises en charge par la couche ICMP de IP.

II) IP dans le détail…

Introduction

Les données envoyées sur un réseau informatique ne sont jamais "en vrac" : elles sont toujours regroupées en paquets dont la structure est bien définie.

Dans le cas de TCP/IP, ces paquets sont appelés datagrammes. En plus des données proprement dites, les datagrammes contiennent aussi une entête qui apporte certains renseignements concernant les données, comme leur adresse IP de provenance et de destination. Pour pouvoir transiter par tous les types de réseaux locaux, le datagramme IP est enfermé dans une trame ("enveloppe") dont le type correspond au réseau traversé. C'est ce qu'on appelle l'encapsulation.

La taille maximale d'un datagramme IP (entête + données) est de 65535 octets. Comme il se peut qu'un réseau traversé ne puisse pas acheminer des blocs de données aussi grands, le protocole IP est capable de gérer la fragmentation des datagrammes, ce qui permet de découper un grand datagramme en datagrammes plus petits.

La structure générale d'un datagramme IP est représentée sur la figure suivante :

4 8 16 19 24 32

Version Long. Entête Type de Service Longueur Totale du datagramme 1

Identification Flag Fragment 2

Durée de Vie Protocole Checksum 3

Adresse IP Source 4

Adresse IP destination 5

Options

Options Bourrage

Données

Entête du datagramme

La taille de l'entête d'un datagramme IP est variable, mais elle fait toujours au moins 20 octets. Sur la figure ci-dessus, examinons les différentes parties :

II-1)Version (Vers)

Sur ces 4 bits est codé le numéro de version du protocole IP utilisé. Actuellement, il s'agit pratiquement toujours de la version 4 (0100). Le numéro 5 sert à des applications expérimentales et la version 6 est en cours de mise en service (celle-ci utilise une autre structure de datagramme). Les numéros 0 et 15 sont réservés.

II-2) Longueur d'entête (I.H.L.)

Comme la longueur d'une entête de datagramme IP est variable, elle est codée sur 4 bits, sous forme de mots de 32 bits (4 octets). (Par exemple, 5 représente 5 fois 32 bits, soit 20 octets).

II-3) Type de service (Type of Service ToS)

Ce champ de 8 bits possède la structure suivante :

(Pour l’instant une seule option peut être sélectionnée)

Priorité Type de Service

-délai +débit +fiable -coût 0

0 1 2 3 4 5 6 7

3 bits indiquant la priorité.

- 000 (Par défaut - priorité la moins élevée)

- 111 (supervision réseau- priorité la plus élevée). Cette partie est utilisée par certaines passerelles.

4 bits indiquant le type de service souhaité (en fonctionnement normal, ils sont tous à zéro) :

- Le premier bit demande au routeur de choisir un chemin ayant un délai de transmission le plus court possible (par exemple choisir de passer par un câble sous marin plutôt que par une liaison satellite)

- Le deuxième bit demande au routeur un débit élevé.

- Le troisième bit demande au routeur de diriger les paquets vers des liaisons fiables

- Le quatrième bit demande au routeur de choisir un chemin ayant un coût minimum.

1 bit réservé pour le futur, devant actuellement rester à zéro sauf pour certains cas expérimentaux.

II-4) Longueur du datagramme (Long. Totale)

Longueur totale du datagramme (entête + données), en octets. Comme ce champ est codé sur 16 bits, la longueur maximale d'un datagramme IP est de 65535 octets. Attention : si un datagramme est fragmenté, ce champ fait référence à la longueur du fragment courant et non à la longueur du datagramme initial.

II-5) Fragmentation

Si le routeur reçoit un datagramme trop grand pour le support sur lequel il doit l’envoyer, il est obliger de fragmenter ce datagramme. Il est donc nécessaire de repérer ces fragments et de faire en sorte que le récepteur des fragments d’un datagramme puisse « recoller » les morceaux dans le bon ordre pour reconstituer le datagramme. 3 champs permettent de résoudre ce problème.

II-6) Identification (ID)

Ce champ sur 16 bits sert à identifier un datagramme ou les fragments d'un datagramme fragmenté. En effet, ce champ a la même valeur pour tous les fragments provenant d'un même datagramme.

II-7) Drapeau (Flg)

Ces 3 bits donnent des informations concernant la fragmentation :

0 DF MF

Le premier n'est pas utilisé et doit rester à zéro.

Le deuxième sert à interdire la fragmentation du datagramme (0 - Autorisé, 1 - Interdit) (appelé bit de « non-fragmentation » ou « Don’t Fragment » DF).

Le troisième est à zéro s'il s'agit du dernier fragment du datagramme et à un si d'autres fragments doivent encore arriver (appelé bit « fragments à suivre » ou « More Fragment » MF).

II-8) Place du fragment (Fragment)

Ce nombre codé sur 13 bits indique la position qu’a le 1er octet de donnée du fragment dans le datagramme (non fragmenté). Ce nombre est un multiple de 8 octets. Ainsi, une valeur de 10 signifierait que le 1er octet de donnée de ce fragment est en fait l’octet 80 du datagramme non fragmenté. S'il s'agit du premier fragment, ou si le datagramme n'est pas fragmenté, tous les bits sont à zéro.

II-9) Durée de vie (Time to Life TtL)

Théoriquement, ce champ doit indiquer sur 8 bits le nombre de secondes pendant lequel le datagramme est autorisé à voyager. A chaque passage d'une passerelle, on retire le temps qu'a pris la traversée de la passerelle. En pratique, comme ce temps est souvent inférieur à une seconde, on retire 1, ce qui fait que ce champ indique plus souvent le nombre de passerelles par lesquelles le datagramme peut passer qu'une durée proprement dite. Quand le champ durée de vie atteint zéro, le datagramme est détruit et un message d'erreur est envoyé à l'émetteur. Cette méthode permet d'éviter qu'un datagramme ne circule indéfiniment en boucle.

II-10) Numéro de protocole (Protocole)

Ce champ de 8 bits indique à quel protocole de niveau plus élevé est destiné le datagramme (SAP). La valeur zéro est réservée. Quelques exemples de valeurs : (La liste complète se trouve dans la RFC 790)

1 : ICMP (Internet Control Message Protocol)

6 : TCP (Transmission Control Protocol)

17 : UDP (User Datagram Protocol)

II-11) Contrôle d'entête (Checksum)

Permet de vérifier si l’entête du paquet n’a pas subit de modification pendant la transmission Si il y a eu modification, le datagramme est détruit. Le champ est calculé comme suit : c'est le complément à 1 sur 16 bits de la somme des compléments à un de tous les mots de 16 bits de l'entête, en considérant les bits du champ "contrôle d'entête" comme étant à zéro.

II-12) Adresse IP source

Adresse IP de l'émetteur du datagramme.

II-13) Adresse IP destination

Adresse IP du destinataire du datagramme.

II-14) Options IP (Options)

Il s'agit d'un champ de longueur variable utilisé principalement pour la mise au point ou pour des expérimentations. Les options ne sont pas obligatoires. Elles sont toutes codée les unes à la suite des autres, sans séparateur particulier.

II-15) Bourrage

A cause de la structure du champ "longueur d'entête", la longueur de l'entête doit être un multiple de 32 bits. Si des options IP sont utilisées, il se peut que ce ne soit plus le cas. On remplit alors le champ "Bourrage" de zéros jusqu'à ce que la longueur de l'entête soit à nouveau multiple de 32 bits.

II-16) Données

Ce sont les données du datagramme proprement dites.

C) Les protocoles des réseaux locaux

Nous avons commencé à voir comment grâce au protocole IP on peut interconnecter des réseaux locaux.

Pour compléter l’étude il va être nécessaire de mettre en évidence comment grâce au protocole ARP, le paquet va pouvoir être distribué sur le réseau local. Pour cela, il est avant tout nécessaire de montrer comment l’information circule sur un réseau local.

Nous nous intéresserons dans un premier temps au type de réseau local et aux protocoles les plus couramment utilisés à savoir :

réseau Ethernet 10baseT et 100baseT

protocole de Niveau II EthernetII

I) Méthode d’accès au support.

Pour comprendre la méthode d’accès, il faut déjà comprendre le fonctionnement d’un HUB (en français : concentrateur)

Un HUB est constitué de plusieurs ports accéssibles par des prises RJ 45 femelles. Lorsqu’une station envoie des données dans une trame (sur la « paire émission »), le HUB reçoit cette trame et la réenvoie en même temps sur tous les autres ports (sur la « paire réception » des stations)

Le problème est le suivant :

La station A envoie une trame, B et C reçoivent cette trame. Si pendant ce temps la station C envoie aussi une trame, la station B va recevoir un mélange des deux trames ce qui donnera quelque chose d’incompréhesible pour B. Il est donc nécessaire de règlementer l’envoi des trames sur le support physique d’où la mise au point d’une « méthode d’accès au support.

La méthode d’accès utilisée sur les réseaux Ethernet est conforme au CSMA/CD (Carrier Sense Multiple Access/ Collision Detect en français cela donne : Surveillance de Porteuse pour l’Accés Multiple/ Détection de Collision). Dans cette méthode il y a deux aspects le CSMA et le CD

I-1) Le principe du CSMA est le suivant :

Une station qui veut envoyer une trame (station A) vérifie qu’il n’y a pas de signal (de trame) sur sa paire réception.

Si il y a un signal (c’est qu’une autre station -B par exemple- est en train d’envoyer une trame) alors la station A attend tant qu’il y a un signal sur sa paire réception

Si il n’y a pas de signal alors la station peut envoyer sa trame

On voit qu’avec ce système une station ne peut pas émettre si une autre station a commencé à émettre, sauf si deux stations constatent en même temps que personne n’émet de trame et qu’elles décident en même temps d’émettre, d’où

I-2) Le principe du CD (collision detect) :

Lorsqu’une station est en train d’envoyer une trame et qu’en même temps elle détecte un signal sur sa paire réception elle arrête d’envoyer sa trame (bien entendu il en est de même pour toutes les stations qui étaient en train d’émettre.

Les stations qui ont arrêté d’emettre vont devoir recommencer à émettre. Si elles recommencent à réenvoyer leur trame en même temps la collision va se reproduire. Pour éviter cela chaque station va réémettre sa trame au bout d’un temps égal à NxTS (N multiplié par TS)

« TS » est le Time Slot dont la valeur est de 51,2 µs pour le 10 Base T. L’origine de ce Time Slot sera vu en détail par la suite.

« N » est un nombre entier dont la valeur est prise au hasard dans un intervalle de valeurs dont la taille augmente à chaque tentative ratée. Au bout de 16 tentatives la station arrête ses tentatives et retoune un message d’erreur

Nombre de tentatives Plage de tirage de N

1 0 ? 1

2 0 ? 3

3 0 ? 7

4 0 ? 15

5 0 ? 31

6 0 ? 63

7 0 ? 127

8 0 ? 255

9 0 ? 511

10 0 ? 1023

11 0 ? 1023

12 0 ? 1023

13 0 ? 1023

14 0 ? 1023

15 0 ? 1023

16 0 ? 1023

I-3) Algorithme d’émission

L’algorigramme suivant montre le processus d’émission d’une trame par une station.

II) Format de la trame Ethernet II

Nous avons vu que les stations appartenant à un même réseau local s’échangent des trames. Ces trames peuvent contenir par exemple un paquet IP. Nous allons maintenant étudier les différents champs de cette trame Ethernet II.

II-1) Le préambule sert à la synchronisation des horloges au niveau physique. En effet il est nécessaire de resynchroniser les horloges au début de chaque trame puisque en l’absence de trame, il n’y a aucun signal de transmis sur le support et les horloges sont donc désynchronisées.

Il est donc possible que les premiers de ces 7 premiers octets soient mal décodés.

L’essentiel est que le SFD soit reconnu en entier et identifier comme étant le début réel de la trame, pour que la trame soit valide. (SFD=Start Frame Delimitor : délimiteur de début de trame. Il est aussi appelé fanion ou drapeau ou Flag en anglais)

II-2) Les adresses MAC

Chaque fabricant de carte réseau attribue à chaque carte une adresse spécifique c’est l’adresse MAC. En principe chaque carte réseau a une adresse unique au monde.

Chaque trame contient dans une entête l’adresse MAC de la station origine et l’adresse MAC de la station destination

II-3) Protocole Réseau

Comme cela a été dit dans l’étude du modèle de référence OSI, la communication entre entités de couches adjacentes se fait par le point d’accès au service (SAP : Service Access Point). A chaque protocole correspond un identifiant pour le point d’accès. La RFC 1700 donne les identifiants. La valeur doit être supérieure à 1500 en décimal (5DC en Hexa). En ce qui nous concerne deux protocoles seront couramment utilisés

Champ Protocole

(Décimal) Champ Protocole

(Hexadécimal) Protocole

2048 800 (s’écrit : 0x800) IP

2054 806 (s’écrit : 0x806) ARP

II-4) Champ de données

Une trame doit obligatoirement contenir un nombre entier d’octets. Le champ de données doit avoir une longueur maximale de 1500 octets et une longueur minimale de 46 octets. Si cette longueur est inférieure à 46 octets, il est nécessaire de rajouter des octets de remplissage permettant d’obtenir 46 octets (PAD). Cela afin que la durée de transmission de la trame soit au moins égale au Time Slot (temps nécessaire à la trame pour faire l’aller et retour entre deux stations dans le cas le plus défavorable : 51,2 µs pour le 10 base T). Cela permettant d’être certain de détecter toutes les collisions (Du premier octet de l’adresse destinataire au dernier octet du CRC la longueur minimale de la trame est donc de 64 octets soit 512 bit).

II-5) Détection d’erreurs

La détection des erreurs se fait en utilisant un CRC sur 32 bits, dont le polynôme générateur est égal à :

G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x5 + x4 + x2 + 1

L’expéditeur de la trame détermine le CRC grâce à une division polynomiale du contenu de la trame (adresses + champ protocole + champ de données) par le polynôme générateur puis l’expéditeur « colle » ce CRC après le champ de données puis envoie sa trame.

Le récepteur récupère la trame, repère la fin de la trame (IFS : voir paragraphe suivant) Le récepteur fait à son tour le même calcul du CRC que l’expéditeur, puis il compare les deux CRC. Si ils sont identiques la trame est considérée bonne et elle est envoyée à la couche supérieure, si ils sont différents la trame est considérée mauvaise et elle est aussitôt détruite.

II-6) Silence Inter trame

Le silence Inter trame (IFS : Inter Frame Spacing) est la durée minimale qui sépare deux trames sur le réseau. En 10 base T cette durée est de 9,6 µs. Le silence inter trame permet de déterminer la fin d’une trame.

II-7) Représentation de la

trame Ethernet II

7 octets

Préambule 10101010

-----------

10101010

1 octet (SFD) 10101011

6 octets Adresse Destinataire

6 octets Adresse Source

2 octets Protocole Réseau

Taille données min. = 46 octets

Taille données max. = 1500 octets

Données

+ PAD pour un remplissage éventuel

4 octets CRC

D) Le Protocole ARP (Address Resolution Protocole)

Nous avons vu dans les chapitres précédents

Que l’adressage IP permettait l’adressage de stations appartenant à différents réseaux. L’acheminement des paquets à travers les réseaux se faisant grâce aux routeurs au niveau de la couche 3.

Que l’adressage à l’intérieur d’un réseau local se fait grâce à l’adresse MAC des stations au niveau de la couche 2.

De ces deux remarques on déduit donc qu’il est nécessaire d’établir un lien entre l’adresse IP d’une station et son adresse MAC pour qu’un Paquet IP arrivant dans un réseau local à destination d’une station puisse être acheminé vers la bonne station. C’est le protocole ARP qui va permettre d’établir ce lien.

I) Explication :

Une station A veut envoyer un paquet IP à une station B du réseau local. La station A connaît l’adresse IP de la station B mais ne connaît pas son adresse MAC.

Étape 1

La station A va donc fabriquer un paquet de requête ARP. Ce Paquet contient (entre autres) les éléments suivants :

Le type de paquet ARP (demande, requête)

@ MAC de A (adresse MAC source)

@ IP de A (adresse IP source)

un élément à 0 (indiquant @MAC destination inconnue)

@ IP de B (Adresse IP destination)

Étape 2

Ce paquet est ensuite encapsulé dans une trame qui va être diffusée à toutes les stations du réseau local (il est nécessaire de la diffuser puisque l'adresse MAC destinataire n’est pas connue). Les éléments de la trame seront donc :

@ MAC de A (adresse MAC de la source)

@ MAC de diffusion (FF FF FF FF FF FF)

Type de protocole au niveau 3 (0806 indique que le champ « info » de la trame Ethernet II contient un paquet ARP)

Étape 3

Toutes les stations du réseau local vont donc devoir prendre en compte cette trame et analyser le paquet qui s’y trouve encapsulé. Les stations qui ne reconnaissent pas leur propre adresse IP dans le champ Adresse IP destination ne font rien de plus.

Étape 4

Par contre la station B qui reconnaît son adresse IP doit fabriquer un paquet de réponse ARP. Ce paquet contient entre autre les éléments suivants :

Le type de paquet ARP (Réponse)

@ MAC de B (adresse MAC source. C’est l’adresse qui était recherchée.)

@ IP de B (adresse IP source = @IP destination dans la Requête)

@ MAC de A (adresse MAC destination = @MAC source dans la Requête )

@ IP de A (Adresse IP destination = @IP source dans la Requête)

Étape 5

Ce paquet est ensuite encapsulé dans une trame qui va être envoyée à la station A. Les éléments de la trame seront donc :

@ MAC de B (adresse MAC de la source. C’est l’adresse qui était recherchée)

@ MAC de A (adresse MAC destination)

Type de protocole au niveau 3 (0806 indique que le champ « info » de la trame Ethernet II contient un paquet ARP)

Étape 6

La station A qui reçoit directement la trame (point à point) va pouvoir envoyer son paquet IP dans une trame ayant la bonne adresse MAC de destination. La station A va mettre aussi à jour sa table ARP. Ceci lui permettra, la prochaine fois, de ne pas refaire une requête ARP. Toutefois, étant donné que un réseau peut évoluer et que les cartes réseau peuvent être changées, il est nécessaire qu’une station vérifie régulièrement sa table ARP en refaisant des requêtes ARP.

Cet échange peut être représenté par le diagramme fléché suivant :

Format du paquet ARP :

(Format classique sur un réseau Ethernet utilisant le protocole IP V4)

00 01 (indique réseau Ethernet classique) 08 00 (indique réseau IP)

06 (longueur @ MAC) 04 (longueur @ IP) 00 01 (pour une requête) 00 02 (pour une réponse)

Ê (sur 6 octets) Adresse MAC de l’émetteur de la trame…

…Suite de l’adresse MAC de l’émetteur Adresse IP de l’émetteur de la trame…

…Suite de l’adresse IP de l’émetteur (4 octets) Adresse MAC du destinataire de la trame…

…Suite de l’adresse MAC du destinataire (dans le cas d’une requête = 00 00 00 00 00 00 = @ inconnue)

Adresse IP du destinataire de la trame (sur 4 octets)